// WebSocket客户端类
function WebsocketClient() {
};

// 生成WebSocket的终端地址
WebsocketClient.prototype._generateEndpoint = function () {
    // 判断当前网页的协议是https还是http
    if (window.location.protocol == 'https:') {
        // 如果是https协议，终端地址前缀是wss://
        var protocol = 'wss://';
    } else {
        // 如果是http协议，终端地址前缀是ws://
        var protocol = 'ws://';
    }

    // 根据协议和主机地址生成WebSocket的终端地址
    var endpoint = protocol+ window.location.host + '/websocket';
    return endpoint;
};

// 建立WebSocket连接
WebsocketClient.prototype.connect = function (options, UUID, ID) {
    // 生成WebSocket的终端地址
    let endpoint = this._generateEndpoint() + '?uuid=' + UUID+"&SID="+ID;
    // 判断浏览器是否支持WebSocket
    if (window.WebSocket) {
        // 如果支持WebSocket
        this._connection = new WebSocket(endpoint);
        // 设置消息类型为二进制数据
        this._connection.binaryType = 'arraybuffer';
    } else {
        // 如果不支持WebSocket，则报错并返回
        options.onError('WebSocket Not Supported');
        return;
    }
    // 监听连接成功事件
    this._connection.onopen = function () {
        options.onConnect();
    };
    // 监听收到消息事件
    this._connection.onmessage = function (evt) {
        // 接收到的数据
        var data = evt.data;
        options.onData(data);
    };
    // 监听连接关闭事件
    this._connection.onclose = function (evt) {
        options.onClose();
    };
};

// 发送数据
WebsocketClient.prototype.send = function (data) {
    // 发送数据
    console.log("发送数据"+data)
    this._connection.send(data);
};

// 发送连接参数
WebsocketClient.prototype.sendInitData = function (options) {
    // 发送连接参数
    this._connection.send(JSON.stringify(options));
}

// 发送指令
WebsocketClient.prototype.sendClientData = function (data) {
    // 发送指令
    this.send(JSON.stringify(data))
};
